#ifndef CVISUALTRIATS_H
#define CVISUALTRIATS_H

#include "CEntity.h"
#include <QRect>
#include "IDimentions.h"

namespace csmodel
{
    class CVisualTraits
    {
    public:

        virtual QRect GetDims() const;
        virtual void SetDims( const QRect & d );

        virtual int Width() const { return GetDims().width(); }
        virtual int Height() const { return GetDims().height(); }
        virtual int Top() const { return GetDims().top(); }
        virtual int Bottom() const { return GetDims().bottom(); }
        virtual int Left() const { return GetDims().left(); }
        virtual int Right() const { return GetDims().right(); }

        virtual void SetTop( int );
        virtual void SetBottom( int );
        virtual void SetLeft( int );
        virtual void SetRight( int );
        virtual void SetWidth( int );
        virtual void SetHeight( int );

        virtual void MoveTo( int x, int y );
        virtual void Move( int dx, int dy );

        virtual void SetBounds( int left, int top, int right, int bottom );

        void Snap( int _xStep, int _yStep, bool _oSnap );
        bool Snap() const { return oSnap && xStep && yStep; }

        void WidthHeight( int w, int h );


        CVisualTraits( IDimentions * anOwner, int _xStep, int _yStep, bool _oSnap );
        virtual ~CVisualTraits();

    private:
        IDimentions* owner;
        int xStep;
        int yStep;
        bool oSnap;

        QRect Dims;
    };

};

#endif // CVISUALTRIATS_H
